---
title: "Upgrading to AG Grid 27"
description: "See what's new in AG Grid, view a full list of changes and migrate your $framework Data Grid to v27 with our Codemods."
migrationVersion: "27.0.0"
---

Full React rendering, Column Filtering Improvements, Sparklines Crosshair, Accessibility Support Improvements
## What's New

AG Grid {% migrationVersion() %} adds many new features - full React rendering, Column Filtering Improvements, Sparklines Crosshair and Accessibility Support Improvements.
<!-- 
Documentation to the highest patch release of the major/minor
NOTE: This will not show if the current library version is the same as the migration version
-->
{% documentationArchiveSection version=migrationVersionPatch() /%}

## Breaking Changes

### Supported Environments
**AG Grid 27 does not support Polymer, Angular 7, AngularJS and Internet Explorer 11**. If you are using Polymer, Angular 7, AngularJS or need to support Internet Explorer 11 please use AG Grid 26, which will be a long-term support release. You will still be able to report issues against AG Grid 26 and we will release new minor versions of AG Grid 26 to address these.

{% if isFramework("react") %}
### React

- `getReactContainerClasses()` is no longer needed as React Portals are not used anymore.
- JavaScript Functional Components are no longer supported when using React. Instead, use either React Functional Components or JavaScript Class Components.
{% /if %}

### Server-Side Row Model

- `getRowNodeId()` is now required when Row Selection is enabled in the Server-Side Row Model.

### React / Angular / Vue

- `get{comp-name}Instance[s]()` (e.g., `getCellRendererInstances`) is no longer needed. These methods now return the React / Angular / Vue component if one exists.

### Clipboard

- The following methods now accept parameterized objects:
  - `copySelectedRowsToClipboard(params?: IClipboardCopyRowsParams)`
  - `copySelectedRangeToClipboard(params?: IClipboardCopyParams)`
- Cell values copied exclusively from the same row are now pasted in the same row (previously, each copied value was pasted on a separate row). Cell values are now copied in the order they appear in the grid (previously, cell values were copied in the order of selection).

### Integrated Charts

- TypeScript users will need to replace the `ChartType` enum with the corresponding string literal. For example, `ChartType.GroupedColumn` should be changed to `'groupedColumn'`.

## Removal of Deprecated APIs

### Rendering
{% metaTag tags=["refreshView", "refreshRows", "rowDataChanged", "refreshGroupRows"] /%}

- The following methods were previously deprecated and have now been removed:
  - `gridApi.refreshView()` - use `gridApi.refreshCells()` or `gridApi.redrawRows()` instead.
  - `gridApi.refreshRows()` - use `gridApi.refreshCells()` or `gridApi.redrawRows()` instead.
  - `gridApi.rowDataChanged` - use `rowNode.setRowData(newData)` to set value on a particular node, or `redrawRows` to refresh everything.
  - `gridApi.refreshGroupRows()` - use `gridApi.refreshCells()` instead. `gridApi.refreshCells()` now performs dirty checking and only refreshes cells that have changed, so it should not be necessary to only refresh the group rows.

### Sorting
{% metaTag tags=["setSortModel", "getSortModel"] /%}

- `gridApi.setSortModel()` and `gridApi.getSortModel()` were previously deprecated and have now been removed. Sort information is now part of Column State. Use `columnApi.applyColumnState()` and `columnApi.getColumnState()` instead.

### Filters
{% metaTag tags=["floatingFilter", "enableOldSetFilterModel", "isAdvancedFilterPresent", "getFilterApiForColDef", "getFilterApi", "onFloatingFilterChanged", "clearButton", "resetButton", "applyButton", "nullComparator", "onFilterChanged", "newRowsAction", "suppressRemoveEntries", "suppressSyncValuesAfterDataChange", "selectAllOnMiniFilter", "syncValuesLikeExcel", "getUniqueValue", "getUniqueValueCount", "isNothingSelected", "isEverythingSelected", "setLoading", "selectEverything", "selectNothing", "unselectValue", "selectValue", "isValueSelected"] /%}

The following Filter Options / APIs were previously deprecated and have now been removed:

**GridOptions**

- `floatingFilter` - removed, use `ColDef.floatingFilter` instead.
- `enableOldSetFilterModel` - removed, use the current model structure for SetFilter instead.

**GridApi**

- `isAdvancedFilterPresent()` - removed, use `isColumnFilterPresent()` instead.
- `getFilterApiForColDef()` - removed, use `getFilterInstance()` instead.
- `getFilterApi()` - removed, use `getFilterInstance()` instead.

**IFilterParams**

- `valueGetter()` callback arguments have changed. They are no longer a solitary `RowNode`, but an object conforming to the `ValueGetterFunc` interface contract for consistency with other `valueGetter` parameters across the grid.

**IFloatingFilterParams**

- `onFloatingFilterChanged()` - removed, use `parentFilterInstance()` callback instead.

**IProvidedFilterParams**

- `clearButton`, `resetButton`, and `applyButton` - removed, use `buttons` instead.

**IScalarFilterParams**

- `nullComparator` and `NullComparator` - removed, use `includeBlanksInEquals`, `includeBlanksInLessThan`, and `includeBlanksInGreaterThan` instead.

**Filter**

- The `Filter` interface has been completely removed. Use `IFilter` instead.

**ProvidedFilter**

- `onFilterChanged()` - removed, use `api.onFilterChanged()` instead.

**ISetFilterParams**

- `syncValuesLikeExcel` - removed; this has been the default since deprecation in v22.0.0.
- `selectAllOnMiniFilter` - removed; this has been the default since deprecation in v22.0.0.
- `suppressSyncValuesAfterDataChange` - removed.
- `suppressRemoveEntries` - removed.
- `newRowsAction` has now been removed; the previous `'keep'` setting is now the default.

**SetFilter**

- `setLoading` is now handled automatically.
- `selectEverything()` - removed, use `setModel()` instead.
- `selectNothing()` - removed, use `setModel()` instead.
- `unselectValue()` - removed, use `setModel()` instead.
- `selectValue()` - removed, use `setModel()` instead.
- `isValueSelected()` - removed, use `getModel()` instead.
- `isEverythingSelected()` - removed, use `getModel()` instead.
- `isNothingSelected()` - removed, use `getModel()` instead.
- `getUniqueValueCount()` - removed, use `getValues()` instead.
- `getUniqueValue()` - removed, use `getValues()` instead.

## Deprecations

This release includes the following deprecations:

### Components

- `{comp-name}Framework` (e.g., `cellRendererFramework`) is no longer required for assigning Custom Framework Components. Use `{comp-name}` (e.g., `cellRenderer`) instead. Likewise, the grid property `frameworkComponents` is deprecated; use the grid property `components` instead.

{% if isFramework("react") %}
### React

* `gridOptions.reactUi` is no longer used as React UI is on by default.
{% /if %}

### Keyboard Navigation
{% metaTag tags=["suppressCellSelection", "StartEditingCellParams", "ICellEditorParams", "IRichCellEditorParams", "ILargeTextEditorParams", "ISelectCellEditorParams", "ITextCellEditorParams", "NavigateToNextCellParams"] /%}

- `gridOptions.suppressCellSelection` is deprecated; use `gridOptions.suppressCellFocus` instead.
- The following interfaces have deprecated properties:
  - `StartEditingCellParams { keyPress: number }` use `StartEditingCellParams { key: string }` instead.
  - `ICellEditorParams { keyPress: number }` use `ICellEditorParams { key: string }` instead.
  - `IRichCellEditorParams { keyPress: number }` use `IRichCellEditorParams { key: string }` instead.
  - `ILargeTextEditorParams { keyPress: number }` use `ILargeTextEditorParams { key: string }` instead.
  - `ISelectCellEditorParams { keyPress: number }` use `ISelectCellEditorParams { key: string }` instead.
  - `ITextCellEditorParams { keyPress: number }` use `ITextCellEditorParams { key: string }` instead.
  - `NavigateToNextCellParams { key: number }` use `NavigateToNextCellParams { key: string }` instead.

### Columns
{% metaTag tags=["getOriginalColumnGroup"] /%}

- `gridApi.getOriginalColumnGroup()` is deprecated; use `gridApi.getProvidedColumnGroup()` instead.

### Filters
{% metaTag tags=["ITextFilterParams"] /%}

- `ITextFilterParams.textCustomComparator` is deprecated; use `ITextFilterParams.textMatcher` instead.

## Changes List

If you would like to see the full list of changes in this release, please see the [Changelog](https://www.ag-grid.com/changelog/?fixVersion=27.0.0).
